package com.cneport.das.common.utils;

import java.io.File;
import java.util.Arrays;
import java.util.List;

/**
 * @author GavinZhang
 * @version 1.0
 * @desc： 文件操作的工具类
 * @company xxxxx （北京）公司
 * @date 2021/8/10 12:45
 */
public class FileUtil {


    /**
     * 读取文件中的全部内容
     *
     * @param file class路径下的文件名或全路径名
     * @return
     */
    public static File getFile(String file) {
        return cn.hutool.core.io.FileUtil.file(file);
    }

    /**
     * 获取文件的主名
     *
     * @param file
     * @return
     */
    public static String getFileNameWithoutExt(File file) {
        return cn.hutool.core.io.FileUtil.mainName(file);

    }

    /**
     * 获取文件的主名
     *
     * @param file
     * @return
     */
    public static String getFileExtName(File file) {
        return cn.hutool.core.io.FileUtil.getSuffix(file);

    }

    /**
     * 读取文件中的全部内容
     *
     * @param file
     * @param charset 指定编码字符集
     * @return
     */
    public static String readFile(String file, String charset) {
        return cn.hutool.core.io.FileUtil.readString(file, charset);
    }

    /**
     * 读取文件中的全部内容
     *
     * @param file
     * @return
     */
    public static String readFile(String file) {
        return cn.hutool.core.io.FileUtil.readString(file, "utf8");
    }


    /**
     * 将字符串写入文件
     *
     * @param content
     * @param file
     * @param charset
     * @return
     */
    public static File writeToFile(String content, String file, String charset) {
        return cn.hutool.core.io.FileUtil.writeString(content, file, charset);
    }

    /**
     * 将字符串写入文件
     *
     * @param content
     * @param file
     * @return
     */
    public static File writeToFile(String content, String file) {
        return cn.hutool.core.io.FileUtil.writeString(content, file, "utf8");
    }

    /**
     * 删除指定路径的文件或目录
     *
     * @param path
     * @return
     */
    public static boolean del(String path) {
        return cn.hutool.core.io.FileUtil.del(path);
    }

    /**
     * 读取文件中的每一行返回
     *
     * @param file 文件绝对路径或网络资源路径
     * @return
     */
    public static List<String> readUtf8Lines(String file) {
        return cn.hutool.core.io.FileUtil.readUtf8Lines(file);
    }

    /**
     * 往文件中追加若干行字符串
     *
     * @param lines
     * @param file
     */
    public static void appendUtf8Lines(List<String> lines, String file) {
        cn.hutool.core.io.FileUtil.appendUtf8Lines(lines, file);
    }

    /**
     * 往文件中追加若干行字符串
     *
     * @param line
     * @param file
     */
    public static void appendLineToFile(String line, String file) {
        cn.hutool.core.io.FileUtil.appendUtf8Lines(Arrays.asList(line), file);
    }

    /**
     * 将多行文件写入
     *
     * @param lines
     * @param file
     */
    public static void writeUtf8Lines(List<String> lines, String file) {
        StringBuilder sb = new StringBuilder();
        for (String line : lines) {
            sb.append(line + "\n");
        }
        String content = sb.toString();
        writeToFile(content, file, "utf8");
    }

    /**
     * 获取classpath路径
     *
     * @return
     */
    public static String getClassPath() {
        return ClassLoader.getSystemResource("").getPath();
    }

}
